# 获取cmdlet、别名、函数、筛选器、脚本和应用程序
# Get-Command

# 获取当前会话中的命令
# Get-Command -ListImported

# 获取 cmdlet 并按顺序显示它们
# Get-Command -Type Cmdlet | Sort-Object -Property Noun | Format-Table -GroupBy Noun

# 获取模块中的命令
# Get-Command -Module Microsoft.PowerShell.Security, Microsoft.PowerShell.Utility

# 获取有关 cmdlet 的信息
# Get-Command Get-AppLockerPolicy

# 获取 cmdlet 的语法
# Get-Command -Name Get-ChildItem -Args Cert: -Syntax

# 获取动态参数
# function Get-DynamicParameters{
#     param($Cmdlet, $PSDrive)
#     (Get-Command -Name $Cmdlet -ArgumentList $PSDrive).ParameterSets |
#         ForEach-Object {$_.Parameters} |
#             Where-Object {$_.IsDynamic} |
#                 Select-Object -Property Name -Unique
# }
# Get-DynamicParameters -Cmdlet Get-ChildItem -PSDrive Cert:

# 获取所有类型的所有命令
# C:\Windows\system32\ 的exe们也会有
# 比单单Get-Command多了东西
# Get-Command *

# 使用参数名称和类型获取cmdlet
# Get-Command -ParameterName *Auth* -ParameterType Microsoft.WSMan.Management.AuthenticationMechanism

# 获取别名
# Get-Command -Name dir

# 从别名获取语法
# Get-Command -Name dir -Syntax

# 获取记事本命令的所有实例
# Get-Command notepad.exe -All | Format-Table CommandType, Name, Definition

# 获取包含cmdlet的模块名称
# (Get-Command Get-Date).ModuleName
# (Write-Debug "123").ModuleName

# 获取具有输出类型的cmdlet和函数
# Get-Command -Type Cmdlet | Where-Object OutputType | Format-List -Property Name, OutputType

# 获取将特定对象类型作为输入的cmdlet
# Get-Command -ParameterType (((Get-NetAdapter)[0]).PSTypeNames)

# 使用模糊匹配获取命令
# Get-Command get-command -UseFuzzyMatching